home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh -
-
- # $Id: MAKEDEV,v 1.3 1994/01/04 10:27:24 alfie Exp alfie $
- #
- # This is my attempt at a MAKEDEV script. IMHO it cleans up many areas.
- # It can be used to determine the necessary info for a device without
- # actually creating it using the '-n' flag.
- #
- # It is based (heavily) on Jim Winstead's version and my main source of
- # information has been Rick Miller's Linux device list.
- #
- # It makes less individual devices and tends to make classes of devices
- # (eg "MAKEDEV hda" will create "hda" and the 8 partitions; "MAKEDEV ptyp"
- # will create the ptyp[0-f] master and ttyp[0-f] slave devices).
- #
- # The group used for the devices are changeable at the head of the script,
- # so you can edit these to match the groups on your system, or your whims.
- #
- # If you are aware of any glaring omissions or errors, please let me know.
- #
- # Thanks to Ian Jackson for help and encouragement.
- #
- # Nick Holloway <alfie@dcs.warwick.ac.uk>
- # Last changed: 4th January 1994
- #
- #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
- # Device 'make' file. Valid arguments:
- #
- # generic create a generic subset of devices
- # local configuration specific devices (runs MAKEDEV.local)
- # std standard devices
- # Virtual Terminals:
- # console (also known as tty0)
- # tty{0..63} virtual consoles
- # Serial devices:
- # ttyS{0..63} serial ports and corresponding dialout device
- # Pseudo Terminals:
- # pty[p-s] banks of of master and slave pseudo terminals
- # Parallel ports:
- # par[0-3] parallel ports
- # lp[0-3] "" ""
- # Bus Mice:
- # busmice various bus mice
- # Joystick:
- # js joystick
- # Disks:
- # fd[0-4] floppy disks
- # hd[a-d] AT hard disks (1st controller)
- # hd1[a-d] 2nd AT controller hard disks
- # xd[a-d] XT hard disks
- # sd[a-i] SCSI hard disks
- # loop Loopback disk devices
- # Tapes:
- # st[0-1] SCSI tapes
- # qic QIC-80 tapes
- # ftape floppy driver tapes (QIC-117)
- # CD:
- # scd[0-1] SCSI CD players
- # sonycd Sony CDU-31A CD player
- # mcd Mitsumi CD player
- # cdu535 Sony CDU-535 CD player
- # lmscd LMS/Philips CD player (needs new major number)
- # sbpcd Sound Blaster CD player
- # Networking:
- # net various protocol control devices (?)
- # we[0-3],wd[0-3],ec[0-3],ne[0-3]
- # various net interfaces (?)
- # Audio:
- # audio various audio devices
- # pcaudio audio devices used by pcsndrv
- # Misc:
- # sg generic SCSI devices
- # fd file names for file descriptors
- #
- #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
-
- # Define what group a collection of devices will be created with -- you will
- # probably need to edit the right hand side to to match your groups.
-
- system=sys
- kmem=kmem
- tty=tty
- dialout=uucp
- mouse=sys
- printer=daemon
- floppy=floppy
- disk=disk
- cdrom=disk
- tape=disk
- net=sys
- audio=sys
-
- #---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
-
- makedev () { # usage: makedev name [bcu] major minor owner:group mode
- rm -f $1
- mknod $1 $2 $3 $4 &&
- chown $5 $1 &&
- chmod $6 $1
- }
- symlink () { # usage: symlink name target
- rm -f $1
- ln -s $2 $1
- }
-
- debug=
- if [ _"-n" = _"$1" ]
- then
- shift
- debug=-n
- makedev () {
- echo "$1 = $2 $3 $4 $5 $6"
- }
- symlink () {
- echo "$1 -> $2"
- }
- fi
-
-
- for arg
- do
- case $arg in
- generic)
- sh $0 $debug std
- sh $0 $debug fd0 fd1
- sh $0 $debug hda hdb
- sh $0 $debug xda xdb
- sh $0 $debug sda sdb
- sh $0 $debug ptyp ptyq ptyr ptys
- sh $0 $debug console tty1 tty2 tty3 tty4 tty5 tty6 tty7 tty8
- sh $0 $debug ttyS0 ttyS1 ttyS2 ttyS3
- sh $0 $debug busmice
- sh $0 $debug lp0 lp1 lp2
- sh $0 $debug par0 par1 par2
- ;;
- local)
- sh $0.local $debug
- ;;
- std)
- makedev mem c 1 1 root:$kmem 660
- makedev kmem c 1 2 root:$kmem 660
- makedev null c 1 3 root:$system 666
- makedev port c 1 4 root:$kmem 660
- makedev zero c 1 5 root:$system 666
- # makedev core c 1 6 root:$kmem 660
- makedev full c 1 7 root:$system 666
- makedev ram b 1 1 root:$disk 660
- makedev tty c 5 0 root:$tty 666
- ;;
- console)
- makedev console c 4 0 root:$tty 622
- ;;
- tty[0-9]|tty[1-5][0-9]|tty[6][0-3])
- line=`expr $arg : "tty\(.*\)"`
- makedev tty$line c 4 $line root:$tty 622
- ;;
- ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3])
- line=`expr $arg : "ttyS\(.*\)"`
- minor=`expr 64 + $line`
- makedev ttyS$line c 4 $minor root:$tty 666
- makedev cua$line c 5 $minor root:$dialout 660
- ;;
- pty[p-s])
- # Currently limited to 64 master/slave pairs.
- bank=`expr $arg : "pty\(.\)"`
- base=`expr \( pqrs : ".*$bank" - 1 \) \* 16`
- for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f
- do
- j=`expr 0123456789abcdef : ".*$i" - 1`
- makedev pty$bank$i c 4 `expr 128 + $base + $j` root:$tty 666
- makedev tty$bank$i c 4 `expr 192 + $base + $j` root:$tty 666
- done
- ;;
- par[0-2])
- port=`expr $arg : "par\(.\)"`
- makedev $arg c 6 $port root:$printer 660
- ;;
- lp[0-2])
- port=`expr $arg : "lp\(.\)"`
- makedev $arg c 6 $port root:$printer 660
- ;;
- busmice)
- makedev logibm c 10 0 root:$mouse 666
- makedev psaux c 10 1 root:$mouse 666
- makedev inportbm c 10 2 root:$mouse 666
- makedev atibm c 10 3 root:$mouse 666
- ;;
- js)
- makedev js0 c 15 0 root:$mouse 666
- makedev js1 c 15 1 root:$mouse 666
- ;;
- fd[0-4])
- unit=`expr $arg : "fd\(.\)"`
- makedev fd$unit b 2 $unit root:$floppy 660
- makedev fd${unit}d360 b 2 `expr $unit + 4` root:$floppy 660
- makedev fd${unit}h1200 b 2 `expr $unit + 8` root:$floppy 660
- makedev fd${unit}D360 b 2 `expr $unit + 12` root:$floppy 660
- makedev fd${unit}H360 b 2 `expr $unit + 12` root:$floppy 660
- makedev fd${unit}D720 b 2 `expr $unit + 16` root:$floppy 660
- makedev fd${unit}H720 b 2 `expr $unit + 16` root:$floppy 660
- makedev fd${unit}h360 b 2 `expr $unit + 20` root:$floppy 660
- makedev fd${unit}h720 b 2 `expr $unit + 24` root:$floppy 660
- makedev fd${unit}H1440 b 2 `expr $unit + 28` root:$floppy 660
- ;;
- hd[a-d])
- unit=`expr $arg : "hd\(.\)"`
- base=`expr \( abcd : ".*$unit" - 1 \) \* 64`
- makedev hd$unit b 3 $base root:$disk 660
- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
- do
- makedev hd$unit$part b 3 `expr $base + $part` root:$disk 660
- done
- ;;
- hd1[a-d])
- unit=`expr $arg : "hd1\(.\)"`
- base=`expr \( abcd : ".*$unit" - 1 \) \* 64`
- makedev hd1$unit b 22 $base root:$disk 660
- for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16
- do
- makedev hd1$unit$part b 22 `expr $base + $part` root:$disk 660
- done
- ;;
- xd[a-d])
- unit=`expr $arg : "xd\(.\)"`
- base=`expr \( abcd : ".*$unit" - 1 \) \* 64`
- makedev xd$unit b 13 $base root:$disk 660
- for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16
- do
- makedev xd$unit$part b 13 `expr $base + $part` root:$disk 660
- done
- ;;
- sd[a-h])
- unit=`expr $arg : "sd\(.\)"`
- base=`expr \( abcdefgh : ".*$unit" - 1 \) \* 16`
- makedev sd$unit b 8 $base root:$disk 660
- for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- do
- makedev sd$unit$part b 8 `expr $base + $part` root:$disk 660
- done
- ;;
- loop)
- for part in 0 1 2 3 4 5 6 7
- do
- makedev loop$part b 12 $part root:$disk 660
- done
- ;;
- st[0-1])
- unit=`expr $arg : "st\(.\)"`
- makedev st$unit c 9 $unit root:$tape 660
- makedev nst$unit c 9 `expr 128 + $unit` root:$tape 660
- ;;
- qic)
- makedev rmt8 c 12 6 root:$tape 660
- makedev rmt16 c 12 8 root:$tape 660
- makedev tape-d c 12 136 root:$tape 660
- makedev tape-reset c 12 255 root:$tape 660
- ;;
- ftape)
- makedev ftape c 27 0 root:$tape 660
- makedev nftape c 27 4 root:$tape 660
- ;;
- scd[0-1])
- unit=`expr $arg : "scd\(.\)"`
- makedev scd$unit b 11 $unit root:$cdrom 660
- ;;
- sonycd)
- makedev $arg b 15 0 root:$cdrom 660
- ;;
- mcd)
- makedev $arg b 23 0 root:$cdrom 660
- ;;
- cdu535)
- makedev $arg b 24 0 root:$cdrom 660
- ;;
- # lmscd)
- # makedev $arg b 24 0 root:$cdrom 660
- # ;;
- sbpcd)
- makedev $arg b 25 0 root:$cdrom 660
- ;;
- net)
- makedev socket c 16 0 root:$net 600
- makedev arp c 16 1 root:$net 600
- makedev unix c 17 0 root:$net 600
- makedev inet c 18 0 root:$net 600
- makedev ip c 18 1 root:$net 600
- makedev icmp c 18 2 root:$net 600
- makedev tcp c 18 3 root:$net 600
- makedev udp c 18 4 root:$net 600
- ;;
- we[0-3])
- card=`expr $arg : "we\(.\)"`
- makedev $arg c 19 $card root:$net 600
- ;;
- wd[0-3])
- card=`expr $arg : "wd\(.\)"`
- makedev $arg c 20 $card root:$net 600
- ;;
- ec[0-3])
- card=`expr $arg : "ec\(.\)"`
- makedev $arg c 20 `expr 8 + $card` root:$net 600
- ;;
- ne[0-3])
- card=`expr $arg : "ne\(.\)"`
- makedev $arg c 20 `expr 16 + $card` root:$net 600
- ;;
- audio)
- makedev mixer c 14 0 root:$audio 666
- makedev sequencer c 14 1 root:$audio 666
- makedev midi c 14 2 root:$audio 666
- makedev dsp c 14 3 root:$audio 666
- makedev audio c 14 4 root:$audio 666
- makedev sndstat c 14 6 root:$audio 666
- # makedev dsp1 c 14 19 root:$audio 666
- # makedev audio1 c 14 20 root:$audio 666
- ;;
- pcaudio)
- makedev pcmixer c 30 0 root:$audio 666
- makedev pcsp c 30 3 root:$audio 666
- makedev pcaudio c 30 4 root:$audio 666
- ;;
- sg)
- for unit in a b c d e f g h
- do
- minor=`expr abcdefgh : ".*$unit" - 1`
- makedev $arg$unit c 21 $minor root:$system 660
- done
- ;;
- fd)
- # not really devices, we use the /proc filesystem
- symlink fd /proc/self/fd
- symlink stdin fd/0
- symlink stdout fd/1
- symlink stderr fd/2
- ;;
- *)
- echo "don't know how to make device \"$arg\"" >&2
- ;;
- esac
- done
-
- exit 0
-